/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wx
 * Date: 2024-05-04
 * Time: 15:34
 */

import java.util.HashMap;

/**
 * 池
 * 编程中常见的,重要的提升效率的方式
 * <p>
 * 1.Class文件常量池：每个.Java源文件编译后生成.Class文件中会保存当前类中的字面常量以及符号信息
 * 2. 运行时常量池：在.Class文件被加载时，.Class文件中的常量池被加载到内存中称为运行时常量池，运行时常
 * 量池每个类都有一份
 * 3. 字符串常量池
 * 双引号引起来的都会放在常量池(StringTable)
 * 遇到双引号,先查常量池是否存在双引号,有就引用
 * 常量池存在这一个值,就不在常量池放这个值
 * new 之后是一个全新的对象
 */
public class Test {



    public static void main3(String[] args) {
        HashMap<String,Integer> map = new HashMap<>();
    }

    public static void main2(String[] args) {
        char[] ch = new char[]{'a', 'b', 'c'};
        String s1 = new String(ch);
        s1.intern();//让s1所指向的对象入池,如果常量池中存在,不入池
        String s2 = "abc";
        System.out.println(s1 == s2);
    }

    public static void main1(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = new String("hello");
        String s4 = new String("hello");
        System.out.println(s1 == s2); // true
        System.out.println(s1 == s3); // false
        System.out.println(s3 == s4); // false
    }
}
